﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace Chapter02
{
    using Chapter02.View;
    using Chapter02.ViewModel;

    /// <summary>
    /// 第2章 XAML
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            #region 01 理解 XAML
            /*
             * 01 WPF 之前的图形用户界面
             * 02 XAML 变体
             * 03 XAML 编译
             * */
            #endregion

            #region 02 XAML 基础
            /*
             * 01 XAML 名称空间
             * 02 代码隐藏类
             * 02.01 InitialzeComponent() 方法
             * 02.02 命名元素
             * */
            #endregion

            #region 03 XAML 中的属性和事件
            /*
             * 01 简单属性和类型转换器
             * 02 复杂属性
             * 03 标记扩展
             * 04 附加属性
             * 05 嵌套元素
             * 06 特殊字符和空白
             * 07 事件
             * 08 完整的 Eight Ball Answer 示例
             * */
            #endregion

            #region 04 使用其他名称空间中的类型
            #endregion

            #region 05 加载和编译 XAML
            /*
             * 01 只使用代码
             * 02 使用代码和未经编译的 XAML
             * */
            #endregion

            #region 06 小结
            #endregion
        }

        private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            if (e.Command == ApplicationCommands.Open)
            {
                var button = e.Source as Button;
                if (button != null)
                {
                    if (button == button1)
                    {
                        Demo(new EightBallAnswerWindow());
                    }
                    if (button == button2)
                    {
                        Demo(new CodeOnly());
                    }
                    if (button == button3)
                    {
                        Demo(Factory.NewWindow(@"View\FileOnly.xaml"));
                    }
                }
            }
        }

        private void Demo(Window window)
        {
            window.Owner = this;
            window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            window.ShowDialog();
        }
    }
}
